/**
 * 公式的请求接口及相关方法
 * urlList  {funName: httpUrl}
 * 默认返回请求Promise对象
 * */

import store from '../../store';

const urlList = {
  getAuthList: 'system/api/auth_list', // 获取权限列表
  // getUserInfo: 'system/api/member_info', // 获取用户信息
  getProxyInfo: 'proxy/api/h_proxy_info',//获取个人信息
  getWxUserInfo: 'wxcat/api/get_wx_userinfo_reg', // 获取微信用户信息
  setWxConfig: 'wxcat/api/get_sign', // 微信js-sdk设置config
  login: 'login/api/login', // 用户登录
  orderList: 'order/api/order_list',//订单列表
  teamList: 'proxy/api/my_team',// 团队列表
  editInfo: 'proxy/api/update_proxy', // 编辑队员信息
  vipAllot: 'proxy/api/vip_allot', // 会员额度
  addItem: 'proxy/api/add_team',// 添加队员
  getProxyList: 'proxy/api/get_proxy_list', // 获取代理商列表
  getSchoolList: 'count/api/schoolIncome', // 获取学校列表 //count/api/schoolIncome
  getSchoolProxyList: 'school/api/get_schools_by_proxy', // 根据代理商返学校
  teamStatistics: 'count/api/team',//代理商团队数据统计
  getSchoolInfo: 'school/api/school_info',//学校信息
  getSchoolClassList: 'classes/api/class_list',//学校班级列表
  getQueryList: 'classes/api/class_detail',//班级详情
  getClassTeachers: 'classes/api/subject_teacher',//班级任课老师
  getStudentInfo: 'student/api/my_info',//学生个人信息详情
  searchStudent: 'student/api/student_detail_list',//查找学生个人信息
  addClassTeacher: 'classes/api/add_teacher',//关联班级老师
  setLeader: 'classes/api/set_leader',//设置班主任
  getGradeSubject: 'teacher/api/xueke_list',//获取年级学科列表
  getTeacherOptions: 'teacher/api/school_teacher',//获取学校老师列表
  getProxySchoolList: 'proxy/api/get_proxy_school_list', //  获取代理商学校列表
  getSerialList: 'vip/api/card_count', // 获取序列号列表
  getCardInfoList: 'vip/api/vip_card_info', // 获取序列号会员卡详情列表
  getCardOrderList: 'vip/api/vip_card_order_list', // 获取序列号批次列表
  seeRecoveryInfo: 'vip/api/serial_info', // 查看回收信息
  searchSerial: 'vip/api/vip_card_one_info', // 搜索序列号
  editCard: 'vip/api/edit_vip_card', // 编辑序列号，激活或启用或禁用
  seeVipNum: 'vip/api/recovery_serial_num', // 查看会员卡数量
  recoverySerial: 'vip/api/recovery_serial', // 回收序列号
  changePW: 'proxy/api/update_pwd',//修改密码
  incomeCount: 'proxy/api/income_count',//收入统计
  getStatic: 'proxy/api/index',//首页统计
  getClassList:'classes/api/school_class', // 根据年级返回班级
  getOrderDetail: 'order/api/order_info',//订单详情
  getArea: 'open/index/get_area',//地区
  addStudent: 'student/api/add_student',//添加学生
  addTeacher: "teacher/api/add_teacher",//添加老师
  addClass: 'classes/api/add_class',//添加班级
  JobTitle: 'teacher/api/job_title_list',//职称列表
  getAreaSchool: 'open/index/get_school',//该地区下的学校列表
  addSchool:'school/api/add_school',//申请开通学校
  getAllGrades:'system/api/all_nianji',// 获取所有年级列表
  getAllotList:'proxy/api/allot_list',// 会员分配列表

};

const apiList = {};

Object.keys(urlList).map(k => {
  // 使用function语法，使得调用时this能指向 http
  apiList[k] = function (params = {}, config = {}) {
    return this.$post(urlList[k], params, config);
  };
});

Object.assign(apiList, {
  /**
   * 自定义方法
   * */
  setMenuFromRule: function (limits = 1000) {
    let { rule, uid, routerList } = store.getters;
    // ...
    // return store.commit('setRouterList', rule);

    function setList(auth, lists) {
      lists = lists.map(listItem => {
        let list = { ...listItem };
        if (list.children && list.children.length) {
          list.children = setList(auth, list.children);
        }
        if (auth.includes(list.path) || list.children && list.children.length) return list;
      });
      return lists.filter(e => e);
    }

    return this.getAuthList({ uid, limits }).then(res => {
      // return this.$post('system/api/auth_list', {uid, limits}).then(res => {
      let rules = (res.list || []).map(e => (/^\//.test(e.auth_mca) ? '' : '/') + e.auth_mca);
      store.commit('setRouterList', setList(rules, [...rule]));
      store.commit('setRules', rules);
      return {
        routerList: store.state.routerList,
        rules: store.state.rules
      };
    });
  }
});

export default apiList;